home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 4_0 / UUPC3 / MAC_SPEC / UNIX_LIB / GENV.C < prev    next >
C/C++ Source or Header  |  1991-12-02  |  5KB  |  248 lines

  1. /* on */
  2. #define Upgrade        /* for alias stuff */
  3. /*         genv.c
  4.  
  5.  
  6.  
  7.         copyright (C) 1987 Stuart Lynne
  8.  
  9.         Copying and use of this program are controlled by the terms of the
  10.         Free Software Foundations GNU Emacs General Public License.
  11.  
  12.  
  13.         version        0.1        March 31/1987
  14.  
  15.  05mar90 - increased length of char arrays holding profile information to handle
  16.             longer file names.  [garym]
  17.  07apr90 - put profile file in System Folder and changed name to "UUPC Settings"
  18.  
  19. */
  20.  
  21. #ifdef THINK_C
  22. # include "unixlibproto.h"
  23. #endif THINK_C
  24.  
  25. #ifdef UNIX
  26. #include <sys/types.h>
  27. #endif
  28. #ifdef slmacaztec
  29. #include <mac/types.h>
  30. #endif
  31.  
  32. #include <stdio.h>
  33. #include <string.h>
  34.  
  35. #include "genv.h"
  36.  
  37. #define DMAILBOX    "root"
  38. #define    DNAME        "System Manager"
  39. #define DHOME        "root"
  40. #define    DDOMAIN        "mac.uucp"
  41. #define    DMAILDIR    "/mail"
  42. #define    DCONFDIR    "/mail/spool"
  43. #define    DSPOOLDIR    "/mail/spool"
  44. #define DPUBDIR        "/mail/spool/uucppublic"
  45. #define    DMAILSERVICE    "uunet"
  46. #define    DNODENAME    "mac"
  47. #define    DDEVICE        "modem"
  48. #define    DSPEED        "2400"
  49. #define    DTEMPDIR    "/tmp"
  50. #define DMAILCOPY    "mail.sent"
  51. #define DSIGNATURE    ".signature"
  52. #define DTIMEDIFF    "GMT"
  53. #define DROUTEVIA    ""
  54. #define DSHORTNAME    ""
  55. #ifdef Upgrade
  56. # define DALIAS        ".alias"
  57. # define DPASSWORD    "uucp"
  58. # define DSLEEPTIME "5"
  59. #endif Upgrade
  60.  
  61.  
  62. #define    TFILENAME    "tmpfile"
  63. #define    FILENAME     "%s/%s"
  64.  
  65. void genv();
  66.  
  67. #ifndef THINK_C
  68. char *getenv();
  69.  
  70.  
  71. char    rmailbox[64];
  72. char    rname[64];
  73. char    rhome[64];
  74. char    rdomain[64];
  75. char    rmaildir[64];
  76. char    rconfdir[64];
  77. char    rspooldir[64];
  78. char    rpubdir[64];
  79. char    rmailserv[16];
  80. char     rnodename[16];
  81. char     rdevice[16];
  82. char     rspeed[8];
  83. char     rphone[64];
  84. char    rtempdir[64];
  85. char    rroutevia[512];
  86. char    rshortname[16];
  87. char    rpassword[64];
  88. char    rsleeptime[8];
  89.  
  90. char    *mailbox = rmailbox;
  91. char    *name = rname;
  92. char    *home = rhome;
  93. char    *domain = rdomain;
  94. char    *maildir = rmaildir;
  95. char    *confdir = rconfdir;
  96. char    *spooldir = rspooldir;
  97. char    *pubdir = rpubdir;
  98. char    *mailserv = rmailserv;
  99. char     *nodename = rnodename;
  100. char     *device = rdevice;
  101. char     *speed = rspeed;
  102. char     *phone = rphone;
  103. char    *tempdir = rtempdir;
  104. char    *shortname = rshortname;
  105. char    *password = rpassword;
  106. char    *sleeptime = rsleeptime;
  107.  
  108. void genv(thename, envname, dflt)
  109. char **thename;
  110. char *envname;
  111. char *dflt;
  112. {
  113.     char * temp;
  114.     
  115.     if ((temp = getenv( envname )) == NULL) {
  116.         /* fprintf( stderr, "genv: %s not found, using %s\n", envname, dflt ); /* */
  117.         temp = dflt;
  118.     }
  119.     strcpy( *thename, temp );
  120.     /*  fprintf( stderr, "genv: %s %s\n", envname, *thename ); /**/
  121. }
  122. #else
  123.  
  124. char    mailbox[80];
  125. char    name[80];
  126. char    home[80];
  127. char    domain[80];
  128. char    maildir[80];
  129. char    confdir[80];
  130. char    spooldir[80];
  131. char    pubdir[80];
  132. char    mailserv[16];
  133. char     nodename[16];
  134. char     device[16];
  135. char     speed[8];
  136. char     phone[64];
  137. char    tempdir[80];
  138. char    timediff[16];
  139. char    signature[80];
  140. char    mailcopy[80];
  141. char    routevia[512];
  142. char    shortname[16];
  143. #ifdef Upgrade
  144. char    alias[80];
  145. char    password[64];
  146. char    sleeptime[8];
  147. #endif Upgrade
  148.  
  149. /* off
  150. #define DEBUG /* */
  151.  
  152. /* use the resource mgr for now; profile opened in init code */
  153. void genv(thename, envname, dflt)
  154.     char *thename;
  155.     char *envname;
  156.     char *dflt; {
  157.     Handle    strH;
  158.     Str255    envbuf;
  159.     
  160.     strcpy((char *)envbuf, envname);
  161.     CtoPstr((char *)envbuf);    /* convert to Pascal string */
  162.     if ((strH = GetNamedResource( 'STR ', envbuf )) == NULL) {
  163. # ifdef DEBUG
  164.         fprintf( stderr, "genv: %s not found, using %s\n", envname, dflt );
  165. # endif DEBUG
  166.         strcpy(thename, dflt);
  167.     }
  168.     else {
  169.         BlockMove((*strH)+1, thename, (Size)(**strH));
  170.         *(thename + (int)(**strH)) = '\0';
  171.         /* copy and convert to C string */
  172.     }
  173. # ifdef DONTDOTHIS
  174.     fprintf( stderr, "genv: %s %s\n", envname, *thename );
  175. # endif DONTDOTHIS
  176. }
  177. #endif
  178.  
  179. void loadenv()
  180. {
  181.     int i;
  182.     SysEnvRec SysEnv;
  183.     
  184.     SysEnvirons(1, &SysEnv);
  185.     
  186.     if ((i = OpenRFPerm("\pUUPC Settings", 0, fsRdPerm)) == -1 &&
  187.         (i = OpenRFPerm("\pUUPC Settings", SysEnv.sysVRefNum, fsRdPerm)) == -1) {
  188.         fprintf( stderr, "ERROR: Can't find \"UUPC Settings\" file here or in System Folder\r" );
  189.         return;
  190.     }
  191.     
  192.     /* get environment var's */
  193.     genv( name, NAME, DNAME );
  194.     genv( mailbox, MAILBOX, DMAILBOX );
  195.     genv( home, HOME, DHOME );
  196.     genv( domain, DOMAIN, DDOMAIN );
  197.     genv( maildir, MAILDIR, DMAILDIR );
  198.     genv( confdir, CONFDIR, DCONFDIR );
  199.     genv( spooldir, SPOOLDIR, DSPOOLDIR );
  200.     genv( pubdir, PUBDIR, DPUBDIR );
  201.     genv( mailserv, MAILSERVICE, DMAILSERVICE );
  202.     genv( nodename, NODENAME, DNODENAME );
  203.     genv( device, DEVICE, DDEVICE );
  204.     genv( speed, SPEED, DSPEED );
  205.     genv( tempdir, TEMPDIR, DTEMPDIR );
  206.     genv( timediff, TIMEDIFF, DTIMEDIFF);
  207.     genv( mailcopy, MAILCOPY, DMAILCOPY);
  208.     genv( signature, SIGNATURE, DSIGNATURE);
  209.     genv( routevia, ROUTEVIA, DROUTEVIA);
  210.     genv( shortname, SHORTNAME, DSHORTNAME);
  211. #ifdef Upgrade
  212.     genv( alias, ALIAS, DALIAS);
  213.     genv( password, PASSWORD, DPASSWORD);
  214.     genv( sleeptime, SLEEPTIME, DSLEEPTIME);
  215. #endif Upgrade
  216.  
  217.     CloseResFile(i);    /* so we can run pcmail while uupc is running in background */
  218.     
  219.     if (strlen(shortname) == 0) {
  220.         strcpy(shortname, nodename);
  221.     }
  222. }
  223.  
  224. void mkfilename( filename, dirname, name )
  225. char * filename;
  226. char * dirname;
  227. char * name;
  228. {
  229.     if (strchr(name, ':') != NULL) {
  230.         if (*name == ':') {
  231.             sprintf(filename, "%s%s", dirname, name );
  232.         } else {
  233.             strcpy(filename, name);
  234.         }
  235.     }
  236.     else sprintf( filename, FILENAME, dirname, name );    
  237.     /* fprintf( stderr, "New filename %s\n", filename );  /**/    
  238. }
  239.  
  240.  
  241. #ifdef TEST
  242. main()
  243. {
  244.     loadenv();
  245. }
  246. #endif
  247.  
  248.